一份shell“圣经”收好
来源:公众号【编程珠玑】
作者:守望先生
网站:https://www.yanbinghu.com
前言
不知道你是否在为突然想实现某个功能的小脚本而苦苦寻找答案,这里有一份“圣经”用来查看各种仅使用内置bash命令实现各种常用的功能和鲜为人知的用法。
为什么要写脚本?
无论是作为Linux应用开发还是运维,编写shell脚本都是一个最基本的技能,而使用shell能够简洁快速地解决很多问题,提高效率。什么你还不会?那么建议你花点时间学一下,毕竟花不了你太多时间就可以让它给你干活。你也可以参考这里了解一下最基本的用法《这些必备的shell知识你都会了吗?》
为什么要使用内置bash来实现?
使用内置的bash命令可以避免一些依赖,不至于你的脚本迁移到另外一个系统还需要装一些依赖,另外一方面,使用这些内置命令常常也会更加高效。
这份”圣经“是怎样的?
实际上它是github上地一个星标项目,地址如下:
https://github.com/dylanaraps/pure-bash-bible
目前星标近20k,它列出了一些常用的功能,有哪些呢,我们可以看看。
字符串
去掉字符串首尾的空格
去掉字符串中的空格并用空格分割
在字符串中使用正则表达式
分割字符串
字符串大小写转换
字符串反转
检查字符串中是否包含某个子串
检查字符串是否以某个子串结尾
……
数组
反转数组
去除数组中重复元素
随机排列数组元素
……
循环
以数值作为循环条件
以数值变量作为循环条件
以数组作为循环条件
遍历文件内容
遍历文件和目录
……
文件处理
将文件内容读取到字符串中
将文件内容以行为单位读取到数组中
读取文件的前n行
读取文件的最后n行
创建空文件
……
文件路径
获取全路径中的目录名
获取全路径中的文件名
注意,这里仅仅是目录的一小部分,原项目中还有很多内容,包括一些内置变量的获取,系统信息的获取,一些常用语法,常见表达式,基本运算等等。
内容是什么样子的呢?
举个例子,如何去掉字符串首尾的元素,它给了一个shell函数:
trim_string() {
# Usage: trim_string " example string "
: "${1#"${1%%[![:space:]]*}"}"
: "${_%"${_##*[![:space:]]}"}"
printf '%s\n' "$_"
}
那么在shell脚本中就可以这样调用:
trim_string " Hello, World "
#会打印这个结果:Hello, World
而又例如在介绍循环的时候,告诉你一些常见的循环方式:
# Loop from 0-100 (no variable support).
for i in {0..100}; do
printf '%s\n' "$i"
done
或者
VAR=50
for ((i=0;i<=VAR;i++)); do
printf '%s\n' "$i"
done
又或者:
for element in "${arr[@]}"; do
printf '%s\n' "$element"
done
总之作为基础学习的手册也是非常不错了,一些常用的语法在这里都能看到。
总结
实际上里面很多相关功能也有一些bash命令可以直接实现,但是大部分内容作为一个速查的渠道还是不错的,有兴趣的可以去查看:
https://github.com/dylanaraps/pure-bash-bible
关注公众号【编程珠玑】,获取更多Linux/C/C++/Python/Go/算法/工具等原创技术文章。后台免费获取经典电子书和视频资源